home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 1.0 beta / flock-1.0RC3.en-US.win32.exe / flock / modules / FlockCryptoHash.jsm < prev    next >
Text File  |  2007-10-18  |  3KB  |  84 lines

  1. /*
  2.  * BEGIN FLOCK GPL
  3.  * 
  4.  * Copyright Flock Inc. 2005-2007
  5.  * http://flock.com
  6.  * 
  7.  * This file may be used under the terms of of the
  8.  * GNU General Public License Version 2 or later (the "GPL"),
  9.  * http://www.gnu.org/licenses/gpl.html
  10.  * 
  11.  * Software distributed under the License is distributed on an "AS IS" basis,
  12.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  13.  * for the specific language governing rights and limitations under the
  14.  * License.
  15.  * 
  16.  * END FLOCK GPL
  17.  */
  18.  
  19. /**
  20.  * Convenience wrappers for JavaScript code to use nsICryptoHash
  21.  * functionality. They return the standard hex representation of
  22.  * the hashes.
  23.  *
  24.  * Import this module through
  25.  *
  26.  * Components.utils.import("resource:///modules/FlockCryptoHash.jsm");
  27.  *
  28.  * Common usage:
  29.  *
  30.  * var md5 = FlockCryptoHash.md5("thing to hash");
  31.  * var md5 = FlockCryptoHash.md5Stream(someInputStream);
  32.  *
  33.  * There are also SHA1 variants, and generic functions (hash and hashStream)
  34.  * which take an nsICryptoHash algorithm constant as their second parameter.
  35.  */
  36.  
  37. const CC = Components.classes;
  38. const CI = Components.interfaces;
  39. const CR = Components.results;
  40.  
  41. var EXPORTED_SYMBOLS = ["FlockCryptoHash"];
  42.  
  43. var FlockCryptoHash = {
  44.   hashStream: function FlockCryptoHash_hashStream(aStream, aAlgorithm) {
  45.     var hasher = CC["@mozilla.org/security/hash;1"]
  46.                  .createInstance(CI.nsICryptoHash);
  47.     hasher.init(aAlgorithm);
  48.  
  49.     hasher.updateFromStream(aStream, aStream.available());
  50.     var hash = hasher.finish(false);
  51.  
  52.     var ret = "";
  53.     for (var i = 0; i < hash.length; ++i) {
  54.         var hexChar = hash.charCodeAt(i).toString(16);
  55.         if (hexChar.length == 1) {
  56.             ret += "0";
  57.         }
  58.         ret += hexChar;
  59.     }
  60.  
  61.     return ret;
  62.   },
  63.   hash: function FlockCryptoHash_hash(aString, aAlgorithm) {
  64.     var stream = CC["@mozilla.org/io/string-input-stream;1"]
  65.                  .createInstance(CI.nsIStringInputStream);
  66.     stream.setData(aString, aString.length);
  67.     return this.hashStream(stream, aAlgorithm);
  68.   },
  69.  
  70.   md5Stream: function FlockCryptoHash_md5Stream(aStream) {
  71.     return this.hashStream(aStream, CI.nsICryptoHash.MD5);
  72.   },
  73.   md5: function FlockCryptoHash_md5(aString) {
  74.     return this.hash(aString, CI.nsICryptoHash.MD5);
  75.   },
  76.  
  77.   hexSHA1FromStream: function FlockCryptoHash_hexSHA1FromStream(aStream) {
  78.     return this.hashStream(aStream, CI.nsICryptoHash.SHA1);
  79.   },
  80.   sha1: function FlockCryptoHash_sha1(aString) {
  81.     return this.hash(aString, CI.nsICryptoHash.SHA1);
  82.   }
  83. };
  84.